Applications running in a computer system can access data stored in non-volatile data storage devices such as solid-state drives (SSDs). In particular, a non-volatile memory express (NVMe)-based SSD is coupled to a host computer system via a Peripheral Component Interconnect express (PCIe) bus. Generally, an application cannot obtain an on-demand storage capacity increase from a non-volatile memory express (NVMe) SSD because the storage capacity of the NVMe SSD is limited to the capacity of the available physical flash capacity of the NVMe SSD.
Restrictions on the number of physical connections to a physical NVMe-SSD device also restrict device connection management and prevent exploitation of connection multiplexing and handling of a bunch of such flash devices in a cluster. The multiplexing of multiple NVMe connections to a group of devices (where each physical device can handle more than one connection) can help in improved scaling and performance across a tier of devices in the backend. In addition, the multiplexing can help in addressing issues of failover, failback, better namespace, or capacity provisioning at run-time as per application run-time requirements that cannot be predicted in advance. Allocation of the storage capacity in the NVMe SSD is largely static, and its physical storage capacity cannot be dynamically increased on-demand at run-time. The non-expandable storage capacity of the NVMe SSD prevents an application running at one node in a network from leveraging unused storage capacity in other peer NVMe SSDs in the same network. This can lead to over-provisioning of data at a local node or a physical host and over time can lead to severe over-provisioning of the data storage capacity across a data storage tier level in a datacenter increasing total cost of ownership (TCO) to operate the datacenter.